<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			
			//ES6-对象
			
			//属性简写
			var age = 33;
			//var obj = {age: age};
			var obj = {age};
			console.log(obj.age);
			
			//方法简写
			var obj = {
				fn() {
					console.log("fn");
				}
			}
			obj.fn();
			
			//
			var age = 18;
			var person = {
				name: "张三",
				age,
				["s"+"ex"]: "男",
				eat: function(){
					console.log("吃货");
				},
				run() {
					console.log("跑步");
				},
				["sl"+"eep"]() {
					console.log("睡觉");
				}
			}
			console.log(person.name);
			console.log(person.age);
			console.log(person.sex);
			person.eat();
			person.run();
			person.sleep();
			
			
			//Object.is()用来比较两个值是否严格相等。
			// 它与严格比较运算符（===）的行为基本一致， 
			// 不同之处只有两个：一是+0不等于-0，二是NaN等于自身
			console.log( +0 === -0); //true
			console.log( Object.is(+0, -0) ); //false
			console.log( NaN === NaN ); //false
			console.log( Object.is(NaN, NaN) ); true


   			//Object.assign() 方法用来将源对象（source）的所有可枚举属性，
   			//复制到目标对象（target）。它至少需要两个对象作为参数，
   			//第一个参数是目标对象，后面的参数都是源对象。
   			//只要有一个参数不是对象，就会抛出TypeError错误。
			
			//合并对象
			var obj1 = {a:1, b:2};
			var obj2 = {b:3, c:4};
			var obj3 = {c:5, d:6};
			var obj = Object.assign(obj1, obj2, obj3);
			console.log(obj);  //{ a: 1, b: 3, c: 5, d: 6 }
			console.log(obj1); //{ a: 1, b: 3, c: 5, d: 6 }
			console.log(obj2); //{ b: 3, c: 4 }
			console.log(obj3); //{ c: 5, d: 6 }
			
			//复制对象
			var obj1 = {a:1, b:2};
			var obj2 = Object.assign({}, obj1);
			console.log(obj2); //{ a: 1, b: 2 }
			console.log(obj1); //{ a: 1, b: 2 }
			console.log(obj1 == obj2); //false
			
			
			
			
			
		</script>
	</head>
	<body>
	</body>
</html>
